package com.project.mapper;

import com.project.bean.CutPageBean;
import com.project.bean.UserBean;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;

public interface IUserMapper {
    /**
     * 添加用户
     *
     * @param user 用户对象
     */
    void add(UserBean user);

    /**
     * 按id删除用户
     *
     * @param id 用户id
     */
    @Delete("delete from t_user where pk_userId=#{id}")
    void del(Integer id);

    /**
     * 按id修改用户等级
     *
     * @param id    用户id
     * @param level 修改的等级
     */
    @Update("update t_user set u_pwd=#{pwd},u_level=#{level} where pk_userId=#{id}")
    void update(Integer id, String level);

    /**
     * 登陆
     *
     * @param name 用户名
     * @param pwd  密码
     * @return 用户对象
     */
    @Select("select * from t_user where u_name=#{name} and u_pwd=#{pwd}")
    @ResultMap("userMap")
    UserBean login(String name, String pwd);

    /**
     * @param id 用户id
     * @return 用户对象
     */
    @Select("select * from t_user where pk_userId=#{id}")
    @ResultMap("userMap")
    public UserBean findById(Integer id);

    /**
     * 分页查询当前页的数据
     *
     * @param name      商品名
     * @param startDate 生产起始日期
     * @param endDate   生产结束日期
     * @param startRow  起始记录数
     * @param pageSize  查询条数
     * @return 商品集合
     */
    List<UserBean> cutList(@Param("name") String name,
                           @Param("startDate") LocalDate startDate,
                           @Param("endDate") LocalDate endDate,
                           @Param("startRow") Integer startRow,
                           @Param("pageSize") Integer pageSize);

    /**
     * 分页统计总记录数
     *
     * @param name      商品名
     * @param startDate 起始日期
     * @param endDate   结束日期
     * @return 总记录数
     */
    int cutCount(@Param("name") String name,
                 @Param("startDate") LocalDate startDate,
                 @Param("endDate") LocalDate endDate);

    CutPageBean<UserBean> cutByItem(int pageNO, String name, LocalDate startDate, LocalDate endDate);
}
